type Token = any;
export const useTokenStore = defineStore('token', () => {
  /**
   * 设置token
   */
  const setToken = (v: Token) => {};

  /* 十日之内免登陆，是否记住密码 */
  const rememberMe = ref(true);

  const accessToken = computed(() => '');

  /**
   * 是否登录状态
   * @description 仅判断token是否有存储的数据
   */
  const isLoggedIn = computed(() => !!accessToken.value);

  /**
   * 是否为过期的token
   * @description 1.过期时间为有效格式 2.token已过期
   */
  const isExpiredToken = computed(() => {
    // 确保过期时间是一个有效的字符串
    //const isValidExpiresTime = !isNaN(new Date(state.value?.expires_time ?? '').valueOf());

    return false; //isValidExpiresTime && new Date() >= new Date(state.value!.expires_time);
  });

  /**
   * 是否可以刷新token
   * @description 1.登录状态 2.记住密码状态 3.token已过期
   */
  const canRefresh = computed(() => false);

  /**
   * 是否有效授权
   * @description 1.普通登录状态下，不可刷新token，判断token未过期；2.记住密码状态下，可刷新token，不考虑过期时间
   */
  const isValidAuth = computed(() => {
    // if (isLoggedIn.value && !rememberMe.value && !isExpiredToken.value) {
    //   return true;
    // }
    // if (isLoggedIn.value && rememberMe.value) {
    //   return true;
    // }
    return false;
  });

  /**
   * 刷新token
   */
  const refresh = async () => {
    try {
      const res = { data: '' }; //await refreshTokenApi();
      setToken(res.data);
    } catch (e) {
      return Promise.reject(e);
    }
  };
  return {
    accessToken,
    rememberMe,
    setToken,
    isLoggedIn,
    isExpiredToken,
    isValidAuth,
    canRefresh,
    refresh,
  };
});
